package com.choosefine.it.noplatformmaterial.service;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.choosefine.it.base.dto.PageDTO;
import com.choosefine.it.common.def.CommonConstant;
import com.choosefine.it.noplatformmaterial.dao.APPNoflatformMaterialMapper;
import com.choosefine.it.noplatformmaterial.vo.MaterialConsumeTypeStoreVO;
import com.choosefine.it.noplatformmaterial.vo.NoplatformDetailByEquipTypeVO;
import com.choosefine.it.noplatformmaterial.vo.NoplatformListByMaterialTypeVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;

@Service()
public class APPNoflatformService {
	
	@Autowired
	private APPNoflatformMaterialMapper appNoflatformMaterialMapper;
	/**
	 * 
	 * @Description：外部物料—库存种类列表
	 * @Author：XiongDong
	 * @Create Date：2017年2月24日
	 * @param：
	 * @return：
	 */
	public List<MaterialConsumeTypeStoreVO> materialTypeStore(Map<String, Object> param){
		List<MaterialConsumeTypeStoreVO> noplatList = new ArrayList<>();
		MaterialConsumeTypeStoreVO storeVO = null;
		for (int index = 1; index <= 3; index++) {
			param.put("type", index);
			storeVO = appNoflatformMaterialMapper.materialTypeStore(param);
			if (storeVO == null) {
				storeVO = new MaterialConsumeTypeStoreVO();
				storeVO.setType(index);
			}
			switch (index) {
			case 1://材料
				storeVO.setTypeName("材料");
				noplatList.add(storeVO);
				break;
			case 2: //设施
				storeVO.setTypeName("设施");
				noplatList.add(storeVO);
				break;
			case 3://设备
				storeVO.setTypeName("设备");
				noplatList.add(storeVO);
				break;
			default:
				break;
			}
		}
		param = null;
		storeVO = null;
		return noplatList;
	}
	/**
	 * 
	 * @Description：外部物料—材料—外部材料->指定班组和类别，可以获取到全部物料的种类及其数量
	 * @Author：XiongDong
	 * @Create Date：2017年2月25日
	 * @param：
	 * @return：
	 */
	public Page<NoplatformListByMaterialTypeVO> noplatformMaterialByType(Map<String, Object> param){
//		PageHelper.startPage(page.getPageNum(),page.getPageSize());
		return appNoflatformMaterialMapper.noplatformMaterialByType(param);
	}
	/**
	 * 
	 * @throws Exception 
	 * @Description：外部物料—材料—外部材料—查询（调用商城接口获取品种）->商城接口模糊查询，本接口根据种类code精确查询
	 * @Author：XiongDong
	 * @Create Date：2017年2月25日
	 * @param：
	 * @return：
	 */
	public ArrayList<NoplatformListByMaterialTypeVO> noplatformFilterByMaterialType(Map<String, Object> param,PageDTO page) throws Exception{
		ArrayList<NoplatformListByMaterialTypeVO> result = new ArrayList<>();
		PageHelper.startPage(page.getPageNum(),page.getPageSize());
		String equipmentTypes =(String) param.get("equipmentTypeList");
		if (equipmentTypes==null) {
			param.put("equipmentType", null);
			result.addAll(appNoflatformMaterialMapper.noplatformFilterByMaterialType(param));
			return result;
		}
		else{
			List<String> eTList =new ArrayList<>();
			List<Integer> eTLists = new ArrayList<>();
			try {
				eTList = Arrays.asList(equipmentTypes.split(","));
				for (int i = 0; i < eTList.size(); i++) {
					eTLists.add(Integer.parseInt(eTList.get(i)));
				}
			} catch (NumberFormatException e) {
				 throw new Exception(CommonConstant.PARAMETER_ERROR);
			}
			for(int i=0;i< eTLists.size();i++){
				param.put("equipmentType", eTLists.get(i));
				if(appNoflatformMaterialMapper.noplatformFilterByMaterialType(param) != null){
					result.addAll(appNoflatformMaterialMapper.noplatformFilterByMaterialType(param));
				}
			}
			return result;
		}
	}
	/**
	 * 
	 * @Description：外部物料—材料—外部材料—物料详情->获取某一种类code的物料信息
	 * @Author：XiongDong
	 * @Create Date：2017年2月27日
	 * @param：
	 * @return：
	 */
	public Page<NoplatformDetailByEquipTypeVO>  noplatformDetailByEquipmentType(Map<String, Object> param,PageDTO page){
		PageHelper.startPage(page.getPageNum(),page.getPageSize());
		return appNoflatformMaterialMapper.noplatformDetailByEquipmentType(param);
	}
}
